/* ===================

AX2E (AXESCON XACML 2.0 Engine) is the Java authorization engine, which implements OASIS XACML 2.0 standard.
Copyright (C) 2007 AXESCON LLC

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA


Contact: AXESCON LLC - info{at}axescon.com

 =================== */
/*
 * XML Type:  Resource
 * Namespace: urn:oasis:names:tc:xacml:2.0:context:schema:os
 * Java type: axescon.xacml.model.ctx.Resource
 *
 * Automatically generated - do not modify.
 */
package axescon.xacml.model.ctx.impl;

import axescon.xacml.model.ctx.Attribute;
import axescon.xacml.model.ctx.AttributeValue;
import axescon.xacml.model.ctx.ResourceContent;
import axescon.xacml.model.shared.Identifiers;

import java.util.ArrayList;

/**
 * An XML Resource(@urn:oasis:names:tc:xacml:2.0:context:schema:os).
 * <p/>
 * This is a complex type.
 */
public class ResourceImpl extends RequestPartImpl implements axescon.xacml.model.ctx.Resource {

    public ResourceImpl() {

    }

    private ResourceContent resourceContent;


    /**
     * True if has "ResourceContent" element
     */
    public boolean isSetResourceContent() {
        return getResourceContent() != null;
    }

    /**
     * Unsets the "ResourceContent" element
     */
    public void unsetResourceContent() {
        setResourceContent(null);
    }

    public AttributeValue[] getAttributeList(String id) {
        ArrayList ret = new ArrayList();
        Attribute[] as = getAttributeArray();
        for (int i = 0; i < as.length; i++) {
            if (id.equals(as[i].getAttributeId())) {
                AttributeValue[] avs = as[i].getAttributeValueArray();
                for (int j = 0; j < as.length; j++) {
                    ret.add(avs[i]);
                }
            }
        }
        return (AttributeValue[]) ret.toArray(new AttributeValue[ret.size()]);
    }

    public String getResourceId() {
        ArrayList ret = new ArrayList();
        Attribute[] as = getAttributeArray();
        for (int i = 0; i < as.length; i++) {
            if (Identifiers.RESOURCE_ID.equals(as[i].getAttributeId())) {
                return as[i].getAttributeValueArray()[0].toString();
            }
        }
//todo why thorw an exception?
        throw new IllegalStateException("No resource Id");
    }

    public ResourceContent getResourceContent() {
        return resourceContent;
    }

    public void setResourceContent(ResourceContent resourceContent) {
        this.resourceContent = resourceContent;
    }
}
